
package limfic.dominio;

import java.util.Date;

/**
 * Clase que contiene todos los atributos de la clase Jugador
 * Esta hereda de la clase Persona de la capa de Dominio
 * @author OpenCodes (Nicolas Tenca, Luis Soto)
 * @see Persona
 */

/*
     * Es necesario programar los constructores con parametros ya que
     * la clase persona (de la cual hereda) tiene constructores con parametros
     * Esto se realiza invocando la palabra reservada super() y pasandole los
     * parametros necesarios requeridos por la clase padre.
 */

public class Jugador extends Persona{
    private int dni;
    protected boolean eliminado;

    /**
     * Get the value of eliminado
     *
     * @return the value of eliminado
     */
    public boolean isEliminado() {
        return eliminado;
    }

    /**
     * Set the value of eliminado
     *
     * @param eliminado new value of eliminado
     */
    public void setEliminado(boolean eliminado) {
        this.eliminado = eliminado;
    }

    private String sexo;
    private Date fechaNacimiento;

    /**
     * Constructor Completo
     */
    public Jugador(int id, String nombre, String apellido, String telefono, Direccion direccionParticular, int dni, Date fechaNacimiento, String sexo, boolean eliminado) {
        super(id, nombre, apellido, telefono, direccionParticular);
        this.dni=dni;
        this.sexo = sexo;
        this.fechaNacimiento = fechaNacimiento;
        this.eliminado=eliminado;
    }
    /**
     Constructor sin datos de Direccion
     */
    public Jugador(int id, String nombre, String apellido, String telefono, int dni, Date fechaNacimiento, String sexo, boolean eliminado) {
        super(id, nombre, apellido, telefono);
        this.dni=dni;
        this.sexo = sexo;
        this.fechaNacimiento = fechaNacimiento;
        this.eliminado=eliminado;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getSexo() {
        return sexo;
    }

    public int getDni() {
        return dni;
    }

    public void setDni(int dni) {
        this.dni = dni;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Jugador other = (Jugador) obj;
        if (this.dni != other.dni) {
            return false;
        }
        if ((this.sexo == null) ? (other.sexo != null) : !this.sexo.equals(other.sexo)) {
            return false;
        }
        if (this.fechaNacimiento != other.fechaNacimiento && (this.fechaNacimiento == null || !this.fechaNacimiento.equals(other.fechaNacimiento))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 83 * hash + this.dni;
        hash = 83 * hash + (this.sexo != null ? this.sexo.hashCode() : 0);
        hash = 83 * hash + (this.fechaNacimiento != null ? this.fechaNacimiento.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        StringBuilder b = new StringBuilder("Jugador { ");
		b.append("id:");
		b.append(super.getId());
		b.append("; nombre:");
		b.append(super.getNombre());
		b.append("; apellido:");
		b.append(super.getApellido());
		b.append("; telefono:");
		b.append(super.getTelefono());
        if (super.getDireccionParticular() != null)
        {
			b.append("; direccion: ");
			b.append(super.getDireccionParticular());
		}
        b.append("; dni:");
        b.append(dni);
        b.append("; fechaNacimiento:");
        b.append(fechaNacimiento);
        b.append("; sexo:");
        b.append(sexo);
        b.append("; eliminado:");
        b.append(eliminado);
        b.append(" }");
		return b.toString();
    }

}
